package cn.walls1717.leetcode.array;

/**
 * 69. x 的平方根
 * 力扣地址：https://leetcode-cn.com/problems/sqrtx/
 *
 * @author walls1717
 * @since 2022-04-30
 **/
public class T69 {
    public static void main(String[] args) {
        System.out.println(mySqrt2(8));
    }

    public static int mySqrt2(int x) {
        // 0 和 1 的算数平方根还是 0 和 1
        if (x == 0 || x == 1) {
            return x;
        }
        // 左边界
        int l = 0;
        // 右边界
        int r = x;
        // 给定初始值
        int ans = -1;
        while (l <= r) {
            int mid = l + ((r - l) >> 1);
            // mid*mid <= x ---> mid <= x/mid
            // 如果中间值的平方<=这个整数，那么就去左边找
            if (mid <= x / mid) {
                // 记录中间值
                ans = mid;
                l = mid + 1;
            } else {
                // 如果中间值大于x，那么就去右边找
                r = mid - 1;
            }
        }
        return ans;
    }
}
